import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'
import { useStore } from '@/store'
import routes from './modules/index.js'
import {
	message
} from 'ant-design-vue'

const allRoutes = [
  {
    path: '/',
    name: 'layout',
    redirect: '/home',
    component: () => import('@/layout/index.vue'),
    children:[
      {
        path: '/home',
        name: 'Home',
        component:() => import('@/views/home/index.vue'),
        hide:false,
        icon:'home',
        title:'首页'
      },
      {
        path: '/:pathMatch(.*)*',
        name:'404',
        component: () => import('@/views/404/index.vue')
      },
    ],
  },
  {
    path: '/login',
    name: 'login',
    component: () => import('@/views/login/index.vue')
  }
]
const router = createRouter({
  history: createWebHashHistory(),
  routes: allRoutes,
  scrollBehavior(to, from, savedPosition) {
    return {
      top: 0
    }
  }
})


// 是否获取了用户信息
let hasGetUserInfo = false;

// 全局路由前置守卫
router.beforeEach(async (to, from, next)=>{
  to.meta.keepAlive = true; //设置true 则会缓存当前页面 （tab切换页面时 不回重载）
    // 获取Token
    const store =  useStore();

    // 如果没有Token，并且访问的不是登录页，直接重定向到登录页，这里就会防止用户未登录直接进入Layout布局界面。
    if(!store.token && to.path !== '/login'){
        return next('/login');
    }

    // 如果有Token，但是访问的是登录页
    if(store.token && to.path === '/login'){
        // 从哪里来的，回哪里去
        return next(from.path);
    }

    // 如果有Token，并且没有获取用户信息呢
    if(store.token && !hasGetUserInfo){
        // 拉取用户信息去，如果token过期或者被非法篡改，会在axios的拦截器中进行处理。
         store.againJoinRoute; //再次加入路由
        // 将hasGetUserInfo置true
        hasGetUserInfo = true;
       return next('/home'); //刷新时 返回首页
    }

    // 在最后必须要放行
    next();
});

// router.beforeEach((to, from, next) => {
//   const store = useStore()
//   // 所有菜单path数组
//   // const allPaths = ['/home','/login', '/404', ...Object.keys(store.menuPath)]
//    const allPaths = ['/home','/login', '/404'];
//    var allNew =[];
//    if(store.menuPath){
//      allNew = allPaths.concat(store.menuPath);
//     //  console.log(store.menuPath,allPaths,allNew,"路由");
//    }else{
//     allNew = allPaths;
//    }

//   // 路由拦截
//   if (!store.token && to.path !== '/login') {
//     console.log("未登录");
//     next('/login')
//   } else if (!allNew.includes(to.path)) {
   
//     console.log("已登录");
//     if (to.path != '/' && to.path != '/404') {
//       console.log("访问地址不存在");
//       message.error('访问地址不存在')
//     }
   
//     // next('/home')
//     next({...to,replace:true})
//   } else {
//     store.againJoinRoute; //再次加入路由
//     // console.log("已登录44444");
//     next()
//   }
// })

export default router
